<script setup>
import { storeToRefs } from 'pinia';
const dayjs = useDayjs();
const urlHome = useUrl();
const props = defineProps({
    mpp: Number,
    fio: String,
    year: Number,
    month: Number,
    lgot: String,
    dn: String,
    dk: String,
    lab_pdzr_zav: Array,
    lab_pdzr_tech: Array,
    usl_pdzr_zav: Array,
    usl_pdzr_tech: Array,
    lab_dzr: Array,
    usl_dzr: Array,
    get_nar_usl: Function,
})
const nars_lab_ok = ref([]);
const nars_usl_ok = ref([])
const usl_nars_tech = ref([])
const accept_btn = ref(false);
const nars_numbers = computed(() => props.lab_pdzr_zav.map(x => x.nkv))
const usl_numbers = computed(() => props.usl_pdzr_zav.map(x => x.nkv))
const lab_cancel_text = computed(() => nars_numbers.value.filter(x => !lab_ok_ready.value.includes(x)))
const usl_cancel_text = computed(() => usl_numbers.value.filter(x => !((usl_ok_ready.value).includes(x))))
const lab_ok_ready = computed(() => nars_lab_ok.value.map(function (nar) { return nar.nkv }))
const usl_ok_ready = computed(() => nars_usl_ok.value.map(function (nar) { return nar.nkv }))
const lab_ok_ready_text = computed(() => lab_ok_ready.value)
const usl_ok_ready_text = computed(() => usl_ok_ready.value)
function readyNaryads() {
    accept_btn.value = true
}

async function set_report_by_doc() {
    let formData = new FormData();
    const nars_lab_ok_json = JSON.stringify(nars_lab_ok.value)
    const nars_usl_ok_json = JSON.stringify(nars_usl_ok.value)
    const nars_numbers_json = JSON.stringify(nars_numbers.value)
    const nars_usl_numbers_json = JSON.stringify(usl_numbers.value)
    formData.append("mpp", props.mpp)
    formData.append("nars_lab_all", nars_numbers_json)
    formData.append("nars_lab_ok", nars_lab_ok_json)
    formData.append("usl_numbers_all", nars_usl_numbers_json)
    formData.append("nars_usl_ok", nars_usl_ok_json)
    formData.append("dn", props.dn)
    formData.append("dk", props.dk)
    formData.append("opl", props.lgot)
    formData.append("year", props.year)
    formData.append("month", props.month)

    const response = await $fetch(`${urlHome.value}lab/zav_report_finish/`, {
        method: "POST",
        body: formData,
    })
    if (response.ok) {
        console.log(response)
        props.get_nar_usl()
    } else {
        alert("Не удалось сохранить результат")
    }
}


</script>

<template>
    <div v-show="(lab_pdzr_zav.length + usl_pdzr_zav.length + lab_pdzr_tech.length + usl_pdzr_tech.length + lab_dzr.length + usl_dzr.length) > 0"
        class="">
        <details class="card">
            <summary class="card-header">
                <div v-show="(lab_pdzr_zav.length + usl_pdzr_zav.length + lab_pdzr_tech.length + usl_pdzr_tech.length + lab_dzr.length + usl_dzr.length) > 0"
                    class="collapse-title text-2xl font-medium border-double border-4 border-grey-400">
                    <div class="flex gap-2 max-w-fit">
                        <div icon="i-heroicons-inbox"
                            v-if="(lab_dzr.length + usl_dzr.length > 0 || lab_pdzr_tech.length + usl_pdzr_tech.length > 0) && lab_pdzr_zav.length + usl_pdzr_zav.length === 0">
                        </div>
                        <div v-else-if="lab_pdzr_zav.length + usl_pdzr_zav.length > 0">
                            ⚠️
                        </div>
                        <div v-else>
                            ✅
                        </div>
                        <div><b>{{ fio }}</b></div>

                    </div>
                    <div class="grid grid-cols-3 gap-4 max-w-fit">
                        <div>нарядов: <b>{{ lab_pdzr_zav.length + usl_pdzr_zav.length + lab_pdzr_tech.length +
                            usl_pdzr_tech.length +
                            lab_dzr.length + usl_dzr.length }}</b>
                        </div>
                        <div class="col-span-2">на сумму: <b>{{ Number((lab_pdzr_zav.reduce((s, x) => s + x.stu, 0) +
                            usl_pdzr_zav.reduce((s, x) => s + x.stu, 0) + lab_pdzr_tech.reduce((s, x) => s + x.stu,
                                0)
                            +
                            usl_pdzr_tech.reduce((s, x) => s + x.stu, 0) + lab_dzr.reduce((s, x) => s +
                                x.stu, 0)
                            +
                            usl_dzr.reduce((s, x) => s + x.stu, 0)).toFixed(2)).toLocaleString() }}
                            </b>
                            руб.
                        </div>
                    </div>
                    <div class="text-xl">Закрыто нарядов с участием лаборатории: <b>{{ lab_pdzr_zav.length +
                        lab_pdzr_tech.length +
                        lab_dzr.length }}</b> на сумму <b>{{
                                Number((lab_pdzr_zav.reduce((s, x) => s + x.stu, 0) + (lab_pdzr_tech.reduce((s, x) => s +
                                    x.stu,
                                    0)) +
                                    (lab_dzr.reduce((s, x) => s + x.stu, 0))).toFixed(2)).toLocaleString() }}</b> руб.
                    </div>
                    <div v-if="usl_pdzr_tech.length > 0 || usl_dzr.length > 0" class="text-xl">Закрыто нарядов без
                        участия лаборатории: <b>{{
                            usl_pdzr_tech.length + usl_dzr.length
                        }}</b> на
                        сумму <b>{{ Number((usl_pdzr_tech.reduce((s, x) => s + x.stu, 0) + (usl_dzr.reduce((s, x) => s +
                            x.stu, 0))).toFixed(2)).toLocaleString()
                            }}</b>
                        руб.
                    </div>
                    <div v-if="usl_pdzr_zav.length + usl_pdzr_zav.length > 0">Наряды для проверки: {{
                        usl_pdzr_zav.length +
                        usl_pdzr_zav.length
                    }} на
                        сумму <b>{{ Number((lab_pdzr_zav.reduce((s, x) => s + x.stu, 0) + (usl_pdzr_zav.reduce((s, x) =>
                            s +
                            x.stu, 0))).toFixed(2)).toLocaleString()
                            }}</b> руб.</div>
                    <div v-if="lab_pdzr_tech.length + usl_pdzr_tech.length > 0">Наряды для проверки старшими техниками:
                        {{
                            lab_pdzr_tech.length + usl_pdzr_tech.length }} на
                        сумму <b>{{ Number(((lab_pdzr_tech.reduce((s, x) => s + x.stu, 0)) + (usl_pdzr_tech.reduce((s,
                            x) =>
                            s +
                            x.stu, 0))).toFixed(2)).toLocaleString() }}</b> руб.</div>
                    <div v-if="lab_dzr.length + usl_dzr.length > 0">Закрытые наряды: <b>{{
                        lab_dzr.length +
                        usl_dzr.length }}</b> на <b>{{ Number((lab_dzr.reduce((s, x) => s + x.stu, 0)
                                +
                                usl_dzr.reduce((s, x) => s + x.stu, 0)).toFixed(2)).toLocaleString()
                            }}</b>
                        руб.
                    </div>
                </div>
            </summary>
            <div v-if="(lab_pdzr_zav.length + usl_pdzr_zav.length + lab_pdzr_tech.length + usl_pdzr_tech.length + lab_dzr.length + usl_dzr.length) > 0"
                class=" border-double border-4">
                <div v-if="lab_pdzr_zav.length + usl_pdzr_zav.length > 0">
                    <div class="text-2xl font-semibold text-yellow-600 drop-shadow-md shadow-black-600">Наряды для
                        проверки:
                        {{ lab_pdzr_zav.length + usl_pdzr_zav.length }} на <b>{{ Number(((lab_pdzr_zav.reduce((s, x) =>
                            s +
                            x.stu,
                            0)) +
                            (usl_pdzr_zav.reduce((s, x) => s + x.stu, 0))).toFixed(2)).toLocaleString() }}</b>
                        руб.
                    </div>
                    <div v-auto-animate>
                        <div class="flex item-center my-1 border-solid border-2" v-for="nar in lab_pdzr_zav"
                            :key="nar.id">
                            <div>
                                <UCheckbox :value="nar" @change="readyNaryads" v-model="nars_lab_ok" />
                                Наряд: <b>{{ nar.nkv }}</b>, Сумма: <b>{{ Number(nar.stu.toFixed(2)).toLocaleString() }}
                                    руб.</b>,
                                Дата
                                наряда: {{ dayjs(nar.dou).format('DD.MM.YYYY') }}, Дата закрытия: {{
                                    dayjs(nar.pdzr).format('DD.MM.YYYY')
                                }},
                                Пациент: <b>{{ nar.patient__fam }} {{ nar.patient__im }} {{ nar.patient__ot }}</b>
                            </div>
                            <ZavPhoto :nkv="nar.nkv" />
                        </div>
                    </div>
                    <div v-if="usl_pdzr_zav.length > 0" class="relative flex py-5 items-center">
                        <div class="flex-grow border-t border-gray-950"></div>
                        <span class="flex-shrink mx-4 text-gray-950">Без лаборатории</span>
                        <div class="flex-grow border-t border-gray-950"></div>
                    </div>
                    <div v-auto-animate>
                        <div v-for="usl in usl_pdzr_zav" :key="usl.id"
                            class="flex items-stretch my-1 border-solid border-2">
                            <UCheckbox :value="usl" @change="readyNaryads()" v-model="nars_usl_ok" />
                            Наряд: <b>{{ usl.nkv }}</b>, Сумма: <b>{{ Number(usl.stu.toFixed(2)).toLocaleString() }}
                                руб.</b>,
                            Дата
                            наряда: {{ dayjs(usl.dou).format('DD.MM.YYYY') }}, Дата закрытия: {{
                                dayjs(usl.pdzr).format('DD.MM.YYYY')
                            }},
                            Пациент: <b>{{ usl.patient__fam }} {{ usl.patient__im }} {{ usl.patient__ot }}</b>
                        </div>
                    </div>
                    <br>

                    <UButton label="Утвердить" class="btn btn-sm btn-outline btn-primary m-2"
                        @click="set_report_by_doc()" :disabled="!accept_btn" />
                    <div class="break-keep m-2">Будут утверждены наряды: <b>{{
                        lab_ok_ready_text.length > 0 ?
                            lab_ok_ready_text.join(', ') : "" }} {{ lab_ok_ready_text.length > 0 &&
                                usl_ok_ready_text.length > 0 ? ', ' : "" }} {{
                                usl_ok_ready_text.join(', ')
                            }}</b>
                    </div>
                    <div class="break-keep m-2">Будут отклонены наряды: <b>{{ lab_cancel_text.length > 0 ?
                        lab_cancel_text.join(', ') : '' }} {{ lab_cancel_text.length > 0 &&
                                usl_cancel_text.length > 0 ? ', ' : "" }} {{
                                usl_cancel_text.length > 0 ? usl_cancel_text.join(', ') : ''
                            }}</b>
                    </div>
                </div>
                <div v-if="lab_pdzr_tech.length + usl_pdzr_tech.length > 0"
                    class="text-2xl font-semibold text-purple-800 drop-shadow-md shadow-black-600">Наряды
                    для проверки старшими техниками: {{
                        lab_pdzr_tech.length + usl_pdzr_tech.length }} на
                    сумму <b>{{ Number(((lab_pdzr_tech.reduce((s, x) => s + x.stu, 0)) + (usl_pdzr_tech.reduce((s, x) =>
                        s +
                        x.stu, 0))).toFixed(2)).toLocaleString() }}</b> руб.</div>
                <div v-auto-animate>
                    <div v-for="nar in lab_pdzr_tech" :key="nar.id">
                        Наряд: <b>{{ nar.nkv }}</b>, Сумма: <b>{{ Number(nar.stu.toFixed(2)).toLocaleString() }}
                            руб.</b>,
                        Дата
                        наряда: {{ dayjs(nar.dou).format('DD.MM.YYYY') }}, Дата закрытия: {{
                            dayjs(nar.pdzr).format('DD.MM.YYYY')
                        }},
                        Пациент: <b>{{ nar.patient__fam }} {{ nar.patient__im }} {{ nar.patient__ot }}</b>
                    </div>
                </div>
                <div v-if="usl_nars_tech.length > 0" class="relative flex py-5 items-center">
                    <div class="flex-grow border-t border-gray-950"></div>
                    <span class="flex-shrink mx-4 text-gray-950">Без лаборатории</span>
                    <div class="flex-grow border-t border-gray-950"></div>
                </div>
                <div v-auto-animate>
                    <div v-for="usl in usl_pdzr_tech" :key="usl.id">
                        Наряд: <b>{{ usl.nkv }}</b>, Сумма: <b>{{ Number(usl.stu.toFixed(2)).toLocaleString() }}
                            руб.</b>,
                        Дата
                        наряда: {{ dayjs(usl.dou).format('DD.MM.YYYY') }}, Дата закрытия: {{
                            dayjs(usl.pdzr).format('DD.MM.YYYY')
                        }},
                        Пациент: <b>{{ usl.patient__fam }} {{ usl.patient__im }} {{ usl.patient__ot }}</b>
                    </div>
                </div>
                <div v-if="lab_dzr.length + usl_dzr.length > 0"
                    class="text-2xl font-semibold text-emerald-600 drop-shadow-md shadow-black-600">Закрытые
                    наряды: {{ lab_dzr.length +
                        usl_dzr.length }} на <b>{{ Number(((lab_dzr.reduce((s, x) => s + x.stu, 0)) +
                        (usl_dzr.reduce((s, x) => s + x.stu, 0))).toFixed(2)).toLocaleString()
                        }}</b>
                    руб.
                </div>
                <div v-auto-animate>
                    <div v-for="nar in lab_dzr" :key="nar.id">
                        Наряд: <b>{{ nar.nkv }}</b>, Сумма: <b>{{ Number(nar.stu.toFixed(2)).toLocaleString() }}
                            руб.</b>,
                        Дата
                        наряда: {{ dayjs(nar.dou).format('DD.MM.YYYY') }}, Дата закрытия: {{
                            dayjs(nar.pdzr).format('DD.MM.YYYY')
                        }},
                        Пациент: <b>{{ nar.patient__fam }} {{ nar.patient__im }} {{ nar.patient__ot }}</b>
                    </div>
                </div>
                <div v-if="usl_dzr.length > 0" class="relative flex py-5 items-center">
                    <div class="flex-grow border-t border-gray-950"></div>
                    <span class="flex-shrink mx-4 text-gray-950">Без лаборатории</span>
                    <div class="flex-grow border-t border-gray-950"></div>
                </div>

                <div v-auto-animate>
                    <div v-for="usl in usl_dzr" :key="usl.id">
                        Наряд: <b>{{ usl.nkv }}</b>, Сумма: <b>{{ Number(usl.stu.toFixed(2)).toLocaleString() }}
                            руб.</b>,
                        Дата
                        наряда: {{ dayjs(usl.dou).format('DD.MM.YYYY') }}, Дата закрытия: {{
                            dayjs(usl.pdzr).format('DD.MM.YYYY')
                        }},
                        Пациент: <b>{{ usl.patient__fam }} {{ usl.patient__im }} {{ usl.patient__ot }}</b>
                    </div>
                </div>
            </div>
        </details>
    </div>
</template>

<style>
/* Убираем стандартный маркер Chrome */
details summary::-webkit-details-marker {
    display: none
}

/* Убираем стандартный маркер Firefox */
details>summary {
    list-style: none;
}
</style>